package gates;

import register.Register;

/**
 * Gate interface defines the structure of a gate.
 * @author Matt Cole
 */
public interface Gate {
	
	/**
	 * Applies this gate to the register.
	 */
	public void apply(Register r);
	
	/**
	 * @return Type of gate.
	 */
	public String getName();
	
	/**
	 * Determine if gate is functional representation or not.
	 * @return Functional or not
	 */
	public boolean isFunctional();
}
